﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using RESTTarjetaService.Dominio;

namespace RESTTarjetaService.Persistencia
{
    public class TarjetaDAO
    {
        string generar_tarjeta(string bin)
        {
            string tarjeta;
            int minimo = 1111;
            int maximo = 9999;
            Random r1 = new Random();
            Random r2 = new Random();
            Random r3 = new Random();
            int numero1 = r1.Next(minimo, maximo);
            int numero2 = r2.Next(minimo, maximo);
            int numero3 = r3.Next(minimo, maximo);
            tarjeta = bin + numero1.ToString() + numero2.ToString() + numero3.ToString();
            return tarjeta;
        }

        public Cliente Modificar(int dni)
        {
            string tarjeta;
            Cliente clienteModificado = null;
            string sql = "UPDATE t_cliente SET tarjeta=@ptarjeta, estado='E' WHERE dni=@pdni";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@pdni", dni));
                    tarjeta=generar_tarjeta("9604");
                    com.Parameters.Add(new SqlParameter("@ptarjeta", tarjeta));

                    com.ExecuteNonQuery();
                }
            }
            clienteModificado = Obtener(dni);
            return clienteModificado;
        }

        public Cliente Obtener(int dni)
        {
            Cliente clienteEncontrado = null;
            string sql = "SELECT * FROM t_cliente WHERE dni=@pdni";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@pdni", dni));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            clienteEncontrado = new Cliente()
                            {
                                dni = (int)resultado["dni"],
                                nombre = (string)resultado["nombres"],
                                apellidoMaterno = (string)resultado["apellidoPaterno"],
                                apellidoPaterno = (string)resultado["apellidoMaterno"],
                                lineaCredito = (decimal)resultado["lineaCredito"],
                                tarjeta = (string)resultado["Tarjeta"]
                            };
                        }
                    }
                }
            }
            return clienteEncontrado;
        }
    }
}